#ifndef __MOVE_H__
#define __MOVE_H__

#include <vector>
#include <string>
#include "direction.h"

namespace AI_SOKOBAN
{
  class Move
  {
  public:
	  bool operator==(const Move& b) const;
	  bool operator==(const Direction& b) const;
    Move(Move* parent, int x, int y, Direction dir);
	  Move(Move* parent, int x, int y, std::string s);
	  Direction getDir() const;
	  Move* getParent() const;
	//Get the player position before the move
    int getX() const;
    int getY() const;
	//Get the current box position
	int getBoxCurrentX() const;
    int getBoxCurrentY() const;
	//Get the box position after the move has been applied
	int getBoxNextX() const;
    int getBoxNextY() const;

    void setValue(double value);
    double getValue()const;
	  //std::vector<std::pair<int,int> > getSteps();
  private:
    Direction m_dir;
    int m_x;
    int m_y;
    double m_value;
    Move* m_parent;
	  //std::vector<std::pair<int,int> > m_steps;
  };
}
#endif